let overrides = self.query_overrides(dep);
if overrides.is_empty() {
- self.summaries.query(dep, f)
+ for s in self.summaries.iter() {
+ if dep.matches(s) {
+ f(s.clone());
+ }
+ }
+ Ok(())
} else {
for s in overrides {
f(s);
use cargo::util::{CargoResult, ToUrl};
use cargo::core::resolver::{self, Method};
-fn resolve<R: Registry>(pkg: PackageId, deps: Vec<Dependency>,
- registry: &mut R)
- -> CargoResult<Vec<PackageId>> {
+fn resolve(pkg: PackageId, deps: Vec<Dependency>, registry: &[Summary])
+ -> CargoResult<Vec<PackageId>>
+{
+ struct MyRegistry<'a>(&'a [Summary]);
+ impl<'a> Registry for MyRegistry<'a> {
+ fn query(&mut self,
+ dep: &Dependency,
+ f: &mut FnMut(Summary)) -> CargoResult<()> {
+ for summary in self.0.iter() {
+ if dep.matches(summary) {
+ f(summary.clone());
+ }
+ }
+ Ok(())
+ }
+ }
+ let mut registry = MyRegistry(registry);
let summary = Summary::new(pkg.clone(), deps, HashMap::new()).unwrap();
let method = Method::Everything;
- let resolve = resolver::resolve(&[(summary, method)], &[], registry)?;
+ let resolve = resolver::resolve(&[(summary, method)], &[], &mut registry)?;
let res = resolve.iter().cloned().collect();
Ok(res)
}